1 module about_arrays;
2 
3 import dunit;
4 import helpers;
5 
6 class AboutArrays
7 {
8   mixin UnitTest;
9 
10   @Test
11   void fixed_length_arrays() {
12     string[4] fruits = ["banana", "mango", "apple", "orange"];
13     assertEquals(fruits[0], FILL_IN_THIS_STRING);
14     assertEquals(fruits.length, FILL_IN_THIS_NUMBER);
15     int[5] b = 1; // 5 elements with same value 1
16     assertEquals(b, FILL_IN_THIS_ARRAY);
17   }
18 
19   @Test
20   void dynamic_length_arrays() {
21     string[] fruits = ["banana", "mango"];
22     assertEquals(fruits.length, FILL_IN_THIS_NUMBER);
23     fruits ~= "strawberry";
24     assertEquals(fruits.length, FILL_IN_THIS_NUMBER);
25     assertEquals(fruits[2], FILL_IN_THIS_STRING);
26   }
27 
28 
29   @Test
30   void array_slicing() {
31     int[] a = [4, 3, 2, 1];
32     a[0..2] = [1, 2];
33     assertEquals(a, FILL_IN_THIS_ARRAY);
34     a[0..$] = [0, 0, 0, 0]; // $ is always the last element
35     assertEquals(a, FILL_IN_THIS_ARRAY);
36   }
37 
38   @Test
39   void array_append() {
40     int [] a;
41     a.length = 3; // length extended, elements using default value
42     assertEquals(a, FILL_IN_THIS_ARRAY);
43     a ~= [3, 4];
44     assertEquals(a, FILL_IN_THIS_ARRAY);
45   }
46 
47   @Test
48   void slices_of_the_same_array() {
49     int[] items=[1,1,2,3,5,8,13,21,34,55,89,144];
50     auto slice1=items[2..9];
51     auto slice2=items[4..7];
52     assertEquals(slice1[0],FILL_IN_THIS_NUMBER);
53     assertEquals(slice2[0],FILL_IN_THIS_NUMBER);
54     slice1[3]=99;
55     assertEquals(slice2[1],FILL_IN_THIS_NUMBER);
56     slice2.length=2;  //truncating a slice...
57     assertEquals(items.length,FILL_IN_THIS_NUMBER); // ... changes original array lenght ?
58   }
59 
60 }